package com.tqw.chd.controller;

import com.tqw.chd.pojo.Item;
import com.tqw.chd.service.ItemService;
import com.tqw.chd.vo.ItemVO;
import com.tqw.chd.vo.PageResult;
import com.tqw.common.utils.JsonResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @author Alex
 */
@RestController
@CrossOrigin
@RequestMapping("/item")
public class ItemController {

    @Autowired
    private ItemService itemService;

    /**
     * 拉取所有商品信息,并分类展示
     * 请求路径:/item/getItemList/{query}/{pageNum}/{pageSize}
     * 请求类型:get
     * 请求参数:使用pageResult对象接收
     * 返回值: JsonResult<PageResult>
     * @param pageResult
     * @return
     */
    @GetMapping("/getItemList/{query}/{pageNum}/{pageSize}")
    public JsonResult<PageResult> getItemList(PageResult pageResult){

        pageResult = itemService.getItemList(pageResult);
        return JsonResult.build().code(JsonResult.SUCCESS).data(pageResult);
    }

    /**
     * 修改商品状态
     * 请求路径:/item/updateItemStatus/{id}/{status}/{updated}
     * 请求类型:put
     * 请求参数:id,status,created
     * 返回值:JsonResult
     * @return
     */
    @PutMapping("/updateItemStatus/{id}/{status}/{updated}")
    public JsonResult<?> updateItemStatus(Item item){

        itemService.updateItemStatus(item);
        return JsonResult.build().code(JsonResult.SUCCESS);
    }

    /**
     * 删除商品
     * 请求路径:/item/deleteItemById/{id}
     * 请求类型:delete
     * 请求参数:id
     * 返回值:JsonResult
     * @param id
     * @return
     */
    @DeleteMapping("/deleteItemById/{id}")
    public JsonResult<?> deleteItemById(@PathVariable Integer id){

        itemService.deleteItemById(id);
        return JsonResult.build().code(JsonResult.SUCCESS);
    }

    /**
     * 根据id查询商品
     * 请求路径:/item/{id}
     * 请求类型:get
     * 请求参数:id
     * 返回值:JsonResult<Item>
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public JsonResult<Item> findItemById(@PathVariable Integer id){

        Item item = itemService.findItemById(id);
        return JsonResult.build().code(JsonResult.SUCCESS).data(item);
    }

    /**
     * 根据id修改商品
     * 请求路径:/item/updateItemById
     * 请求类型:put
     * 请求参数:表单数据
     * 返回值:JsonResult
     * @return
     */
    @PutMapping("/updateItemById")
    public JsonResult<?> updateItemById(@RequestBody Item item){

        itemService.updateItemById(item);
        return JsonResult.build().code(JsonResult.SUCCESS);
    }

    /**
     * 新增商品(上架)
     * 请求路径: /item/savaItem
     * 请求类型:post
     * 请求参数:表单数据,itemVO接收
     * 返回值:JsonResult
     * @param itemVO
     * @return
     */
    @PostMapping("/savaItem")
    public JsonResult<?> savaItem(@RequestBody ItemVO itemVO){

        itemService.savaItem(itemVO);
        return JsonResult.build().code(JsonResult.SUCCESS);
    }

}
